package top.v5it.japi.plus.common.func;

/**
 * 自定义函数，接收不定数量参数
 *
 * @author zhanpu
 * @date 2022/5/20
 */
@FunctionalInterface
public interface VoidFunc<T, E extends Throwable> {

    /**
     * 接收不定数量入参
     *
     * @param t 不定数量入参
     * @throws E 调用函数可能输出异常
     */
    @SuppressWarnings("unchecked")
    void accept(T... t) throws E;

    /**
     * 基于本函数返回{@link FuncException}
     *
     * @param t 不定数量入参
     */
    @SuppressWarnings("unchecked")
    default void acceptWithFuncException(T... t) {
        try {
            accept(t);
        } catch (Throwable e) {
            throw new FuncException(e);
        }
    }
}
